home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Clean 1.2.4 / StdEnv / _SystemArray.dcl next >
Encoding:
Text File  |  1997-04-07  |  2.2 KB  |  48 lines  |  [TEXT/3PRM]

  1. system module _SystemArray
  2.  
  3. class Array .a
  4. where
  5.     _createArrayc         :: !Int -> . (a .e)                            | createArrayc_u e
  6.     _updatei            :: !(!*(a .e),!*r) !Int .e -> *r             | updatei_u e
  7.     _uselectf            :: ! u:(a .e) !Int -> (.e, ! u:(a .e))        | uselectf_u e
  8.     _uselectl            :: !(!.(a e ),!.r) !.Int -> (e,!.r)            | uselectl_u e
  9.     _uselectn            :: !(!.(a .e),!.r) !.Int -> (.e,!.r)        | uselectn_u e
  10.     createArray            :: !Int e -> . (a e)                        | createArray_u e
  11.     replace                :: !* (a .e) !Int .e -> (.e, ! * (a .e))    | replace_u e
  12.     select                :: ! .(a .e) !Int -> .e                     | select_u e
  13.     size                :: ! .(a .e)  -> Int                        | size_u e
  14.     update                :: !* (a .e) !Int .e -> . (a .e)            | update_u e    
  15.     uselect                :: ! u:(a e) !Int -> (e, ! u:(a e))         | uselect_u e
  16.     usize                :: ! u:(a .e) -> (!Int, ! u:(a .e))            | usize_u e
  17.  
  18. instance Array { } default, {!}, {#}
  19.  
  20. class createArrayc_u e    :: !Int -> . {# .e }
  21. class updatei_u e        :: !(!*{# .e },!*{x}) !Int .e -> *{x}
  22. class uselectf_u e        :: ! u:{ # .e } !Int -> (!.e, ! u:{ #.e })
  23. class uselectl_u e        :: !(!.{# e},!.{x}) !.Int -> (e,!.{x})
  24. class uselectn_u e        :: !(!.{# .e},!.{x}) !.Int -> (.e,!.{x}) 
  25. class createArray_u e    :: !Int !e -> . {# e }
  26. class replace_u e        :: ! * {# .e } !Int !.e -> (!.e, ! * {# .e })
  27. class select_u e         :: !   { #.e } !Int -> .e
  28. class size_u e            :: !   { #.e } -> Int
  29. class update_u e        :: ! * { #.e } !Int !.e -> . { #.e }
  30. class uselect_u e        :: ! u:{ # e } !Int -> (!e, ! u:{ #e })
  31. class usize_u e            :: ! u:{ #.e } -> (!Int, ! u:{ #.e })
  32.  
  33. instance createArrayc_u    a, Int, Real, Char, Bool, File
  34. instance updatei_u        a, Int, Real, Char, Bool, File
  35. instance uselectf_u        a, Int, Real, Char, Bool, File
  36. instance uselectl_u        a, Int, Real, Char, Bool, File
  37. instance uselectn_u        a, Int, Real, Char, Bool, File
  38. instance createArray_u    a, Int, Real, Char, Bool, File
  39. instance select_u        a, Int, Real, Char, Bool, File
  40. instance size_u            a, Int, Real, Char, Bool, File
  41. instance replace_u        a, Int, Real, Char, Bool, File
  42. instance update_u        a, Int, Real, Char, Bool, File
  43. instance uselect_u        a, Int, Real, Char, Bool, File
  44. instance usize_u        a, Int, Real, Char, Bool, File
  45.  
  46. class ArrayElem a | select_u, uselect_u, uselectf_u, uselectn_u, uselectl_u, size_u, usize_u,
  47.                     update_u, updatei_u, createArray_u, createArrayc_u, replace_u a
  48.